Skip to content

Валидация онтологии ​

Назначение ​

Валидация онтологии позволяет проверять данные онтологии на соответствие заданным правилам и своевременно выявлять ошибки: незаполненные обязательные свойства, значения вне допустимого диапазона, неверный формат (например, электронной почты) и другие нарушения. Проверка выполняется по правилам валидации, которые настраиваются для классов и свойств онтологии.

SHACL-валидация ​

SHACL (Shapes Constraint Language) — стандарт W3C для описания ограничений на данные. В OSA правило валидации задаёт набор ограничений для класса или свойства, которым должны соответствовать экземпляры класса. При проверке система анализирует данные и формирует отчёт о нарушениях: для каждого экземпляра указываются нарушенные правила, свойства и значения.

В зависимости от того, для чего задано правило, оно работает аналогично конструкциям SHACL:

  • правило только для класса — как ограничение формы узла (Node Shape): проверяются условия, относящиеся к объекту в целом
  • правило только для свойства — как ограничение формы свойства (Property Shape): проверяются условия, относящиеся к значению свойства
  • правило и для класса, и для свойства — проверки свойства выполняются только для указанных классов

Основные возможности ​

  • Настройка правил для классов и свойств — правила создаются в конструкторе (пошаговая форма) или задаются напрямую в формате JSON
  • Ограничения значений свойства — количество значений (обязательность), длина строки, шаблон (регулярное выражение), диапазоны числовых значений и дат, тип ссылочного значения
  • Произвольные логические условия — проверка с помощью запроса из триплетов с переменными и логическим фильтром (например, «дата последнего изменения не раньше даты создания пользователя-создателя»)
  • Серьёзность нарушения — Критично (Violation), Предупреждение (Warning), Информация (Info)
  • Собственное сообщение для каждого ограничения
  • Наследование — правило, заданное для класса, действует и для его подклассов; для одного класса допускается несколько правил
  • Проверка при сохранении данных — данные можно валидировать не только с помощью виджета, но и в момент сохранения экземпляров (включается в Главном меню, пункт Валидация при сохранении)
  • Просмотр отчёта — фильтрация и группировка нарушений, список затронутых экземпляров, просмотр текста правила и открытие карточки экземпляра

Информация

Создание и редактирование правил валидации доступно пользователям с правом редактирования онтологии и администраторам платформы. Просмотр отчёта валидации доступен пользователям с правами на просмотр онтологии.

Настройка правил валидации ​

Правила валидации настраиваются в виджете Правило.

Подготовка ​

  1. Откройте онтологию в режиме рабочего пространства (см. раздел Работа с онтологиями)
  2. Если виджет Правило отсутствует на полотне, добавьте его: Добавить виджеты → Правило
  3. Выберите в онтологии класс или свойство, для которого настраивается правило (например, кликните по классу на полотне онтологической карты)

После выбора класса или свойства в виджете Правило отобразится блок Правила валидации со списком ранее созданных правил.

Создание правила ​

  1. Нажмите на кнопку Добавить правило валидации
  2. Введите наименование правила и нажмите на кнопку ОК
  3. Для открытия и изменения правила нажмите на иконку Открыть рядом с правилом в списке
  4. Выберите режим редактирования:
    • Конструктор — пошаговая форма (рекомендуется)
    • JSON — непосредственное редактирование правила в формате JSON
  5. Заполните параметры правила (см. раздел «Параметры конструктора» ниже)
  6. Нажмите на кнопку Сохранить

Параметры конструктора ​

Конструктор правила содержит следующие разделы.

Класс (targetClass) — класс проверяемых объектов. Если правило открыто из класса или свойства, поле не выводится: класс уже задан.

Запрос (select) — необязательный раздел для проверки посредством запроса. Для включения нажмите на кнопку Добавить запрос, для удаления — на иконку Удалить запрос. Раздел содержит:

  • Поле Сообщение (message) — текст, выводимый при нарушении условия запроса
  • Поле Серьезность (severity) — серьёзность нарушения (Критично (Violation), Предупреждение (Warning), Информация (Info))
  • Поле SQL — произвольный SQL-запрос (опционально)
  • Поле Цепочка свойств — редактор цепочки свойств. Синтаксис: [Свойство] > [Свойство].[Свойство]; точка продолжает цепочку свойств, текст между скобками — оператор сравнения значений; клавиши Ctrl+Space — автодополнение ссылок класса
  • Раздел Триплеты (where) — триплеты запроса с переменными (например, ?self, ?a). Для каждого триплета задаются поля Субъект (subject), Предикат (predicate) и Объект (object); для добавления используйте кнопку Триплет
  • Поле Фильтр — логическое условие по переменным триплетов, например ?a > ?c

Ограничения свойств (property) — список проверяемых свойств. Для добавления свойства нажмите на кнопку Добавить свойство. Для каждого свойства доступны:

  • Поле Свойство (path) — проверяемое свойство (обязательно для заполнения)
  • Поле Класс (class) — класс допустимого значения (для свойств-отношений)
  • Поле Сообщение (message) — собственный текст нарушения
  • Поле Серьезность (severity) — серьёзность нарушения
  • Поле Мин. количество значений — минимальное число значений свойства (например, 1 — свойство обязательно)
  • Поле Макс. количество значений — максимальное число значений свойства
  • Поля Мин. длина строки и Макс. длина строки — ограничения длины для строковых значений
  • Поля Мин. включительное значение и Макс. включительное значение — допустимый диапазон, границы включаются
  • Поля Мин. исключительное значение и Макс. исключительное значение — допустимый диапазон, границы исключаются
  • Поле Регулярное выражение — шаблон, которому должно соответствовать значение

Для удаления ограничения свойства используйте иконку Удалить свойство.

Доступные ограничения зависят от типа данных свойства:

Тип свойстваДоступные ограничения
СтроковоеМин. количество значений, Мин./Макс. длина строки, Регулярное выражение
Числовое, датаМин. количество значений, Мин./Макс. включительное значение, Мин./Макс. исключительное значение
ЛогическоеМин. количество значений
Ссылочное (отношение)Мин./Макс. количество значений, Класс

Режим JSON ​

Режим JSON показывает правило целиком в виде JSON-документа и позволяет просматривать и редактировать все установленные ограничения.

Переключение режимов ​

В верхней части редактора правила расположен переключатель Конструктор / JSON.

  • При переходе в JSON текущее состояние конструктора, включая несохранённые изменения, преобразуется в JSON-текст.
  • При возврате в Конструктор JSON-текст преобразуется в соответствующие настройке на форме.

Внимание

Если JSON некорректен, форма останется пустой. Перед переключением убедитесь, что документ валиден.

Просмотр ограничений ​

В JSON видны все ограничения правила: класс проверяемых объектов, блок запроса и полный список ограничений свойств. Режим удобен для аудита правила, поиска причины срабатывания и сравнения правил разных классов.

Редактирование и сохранение ​

  • Правила в JSON-тексте можно добавлять и редактировать напрямую
  • Поддерживаются подсветка синтаксиса, перенос строк и форматирование (кнопка Форматировать JSON)
  • Кнопка Предпросмотр позволяет переключить представление идентификаторов объектов на их наименования
  • Для сохранения используйте кнопку Сохранить
  • При сохранении выполняется проверка на корректность JSON с выводом соответствующего сообщения

Структура JSON ​

  • targetClass — идентификатор класса проверяемых экземпляров
  • select — необязательный блок условия запроса:
    • message — сообщение при нарушении
    • severity — серьёзность: Violation, Warning или Info
    • sql — произвольный SQL-запрос
    • select — список возвращаемых переменных, по умолчанию ["?self"]
    • where — условие: triplets (массив объектов { subject, predicate, object }) и filter (логическое выражение по переменным)
  • property — массив ограничений свойств: path, class, message, severity, minCount, maxCount, minLength, maxLength, minInclusive, maxInclusive, minExclusive, maxExclusive, pattern

Особенности:

  • в where.triplets предикат — идентификатор свойства; переменные начинаются с ? (?self — проверяемый экземпляр); обратная ссылка определяется порядком следования subject и object
  • если select.sql заполнен, используется только SQL, а select и where (цепочка, триплеты, фильтр) не применяются
  • ограничения из property применяются всегда, независимо от наличия select

Пример ​

json
{
  "targetClass": "4374208a-87d5-4f50-a9a5-057f01aa8b71",
  "property": [
    {
      "path": "29133af7-13d1-4480-bcb6-df7b326fa42b",
      "minCount": 1,
      "message": "Не заполнен номер накладной",
      "severity": "Violation"
    }
  ],
  "select": {
    "message": "Сумма накладной должна быть больше нуля",
    "severity": "Violation",
    "sql": "select n.idt from v n where n.idp = '26aaa3fc-b867-46d8-bbec-4990111ec2b6' and n.vn > 0",
    "select": ["?self"],
    "where": {
      "triplets": [],
      "filter": ""
    }
  }
}

Управление правилами в списке ​

В списке Правила валидации доступны следующие возможности:

  • иконка Открыть — предназначена для открытия правила для просмотра и изменения
  • иконка Копировать ID — предназначена для копирования идентификатора правила в буфер обмена
  • иконка Анализировать в факт-эксплорере — предназначена для исследования правила в факт-эксплорере
  • иконка Удалить правило — предназначена для удаления правила (доступна пользователям с правом редактирования онтологии)

Отключение правила ​

Правило можно временно отключить:

  1. Откройте правило, установите флажок Не активно и нажмите на кнопку Сохранить (флажок доступен в режиме Конструктор)

    Отключённое правило отображается в списке серым с иконкой Правило валидации отключено и не участвует в проверке.

  2. Чтобы снова включить правило, откройте форму правила, снимите флажок и сохраните правило.

Запуск проверки и просмотр отчёта ​

Проверка выполняется в виджете Валидация онтологии рабочего пространства онтологии.

  1. Добавьте виджет Валидация онтологии на полотно онтологии
  2. Виджет автоматически запустит проверку данных онтологии по настроенным правилам
  3. Для повторной проверки нажмите на кнопку Обновить на Панели инструментов виджета - проверка будет выполнятся по актуальным данным и правилам

Виджет состоит из трёх областей:

  • Фильтры — отбор нарушений по Серьезности, Правилу, Классу и Свойству. Кнопка Сбросить снимает установленные фильтры
  • Список нарушений — нарушения, сгруппированные по выбранному значению Группировка: по серьезности, по правилу, по классу, по свойству или без группировки. Поле поиска фильтрует нарушения по сообщению, свойству, классу и экземпляру
  • Детали нарушения — сведения о выбранном нарушении

Для просмотра деталей кликните по нарушению в списке. В области деталей выводятся:

  • серьёзность нарушения и количество затронутых экземпляров
  • наименование правила; кнопка Посмотреть правило открывает текст правила
  • таблица Затронутые экземпляры с колонками Экземпляр, Класс и Значение

Клик по экземпляру в таблице открывает его карточку.

Если нарушения не выявлены, выводится сообщение «Нарушений не выявлено — онтология валидна».

Пример: обязательное свойство ​

  1. Создайте класс Клиент со строковым свойством Email
  2. Создайте правило валидации для класса Клиент: свойство Email, Мин. количество значений = 1
  3. Создайте экземпляр Клиент без значения Email
  4. Откройте виджет Валидация онтологии и обновите его: в отчёте появится проблема с серьёзностью Критично и сообщением Количество значений свойства меньше допустимого, а в затронутых экземплярах — созданный экземпляр
  5. Заполните значение Email у экземпляра и обновите виджет: сообщение о нарушении исчезнет